home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Atari Compendium
/
The Atari Compendium (Toad Computers) (1994).iso
/
files
/
umich
/
network
/
ka9q
/
nhclb120.zoo
/
misc.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-06-18
|
2KB
|
121 lines
/* Miscellaneous machine independent utilities */
#include <ctype.h>
#include "global.h"
#ifdef UNIX
#undef toupper
#undef tolower
#endif
/* Convert hex-ascii to integer */
int
htoi(s)
char *s;
{
int i = 0;
char c;
while((c = *s++) != '\0'){
if(c == 'x')
continue; /* allow 0x notation */
if('0' <= c && c <= '9')
i = (i * 16) + (c - '0');
else if('a' <= c && c <= 'f')
i = (i * 16) + (c - 'a' + 10);
else if('A' <= c && c <= 'F')
i = (i * 16) + (c - 'A' + 10);
else
break;
}
return i;
}
/* replace terminating end of line marker(s) with null */
rip(s)
register char *s;
{
register char *cp;
if((cp = index(s,'\r')) != NULLCHAR)
*cp = '\0';
if((cp = index(s,'\n')) != NULLCHAR)
*cp = '\0';
}
/* Case-insensitive string comparison */
strncasecmp(a,b,n)
register char *a,*b;
register int n;
{
char a1,b1;
while(n-- != 0 && (a1 = *a++) != '\0' && (b1 = *b++) != '\0'){
if(a1 == b1)
continue; /* No need to convert */
a1 = tolower(a1);
b1 = tolower(b1);
if(a1 == b1)
continue; /* NOW they match! */
if(a1 > b1)
return 1;
if(a1 < b1)
return -1;
}
return 0;
}
int16
get16(cp)
register char *cp;
{
register int16 x;
x = uchar(*cp++);
x <<= 8;
x |= uchar(*cp);
return x;
}
/* Machine-independent, alignment insensitive network-to-host long conversion */
int32
get32(cp)
register char *cp;
{
int32 rval;
rval = uchar(*cp++);
rval <<= 8;
rval |= uchar(*cp++);
rval <<= 8;
rval |= uchar(*cp++);
rval <<= 8;
rval |= uchar(*cp);
return rval;
}
/* Copy a string to a malloc'ed buffer. Turbo C has this one in its
* library, but it doesn't call mallocw() and can therefore return NULL.
* NOS uses of strdup() generally don't check for NULL, so they need this one.
*/
char *
strdup(s)
const char *s;
{
register char *out;
register int len;
if(s == NULLCHAR)
return NULLCHAR;
len = strlen(s);
out = malloc(len+1);
if (!out) {
printf("strdup: malloc failed\n");
exit(1);
}
/* This is probably a tad faster than strcpy, since we know the len */
memcpy(out,s,len);
out[len] = '\0';
return out;
}